package com.ganbo.ms.pool.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * 对象池配置
 *
 * @author lz
 * @date 2019/7/30
 */
@ConfigurationProperties(prefix = PoolProperties.PROJECT_PREFIX)
@Data
public class PoolProperties {

    public static final String PROJECT_PREFIX = "mdc.pool";
    /**
     * 最大空闲(象池中最多可以有多少个空闲对象。当对象被归还的时候，如果池中空闲对象数量已经达到该值，那么被归还的对象直接被销毁，不需要再进入空闲对象列表。默认8。)
     */
    private int maxIdle = 5;
    /**
     * 最大总数(对象池的最大容量。池里最多存放多少个对象,默认8。)
     */
    private int maxTotal = 20;
    /**
     * 最小空闲(对象池中最少需要有几个空闲对象。高负载的应用系统中，维持一定量的空闲对象可以减少对象频繁销毁、创建。减轻应用压力。
     * 默认值为0，该值的有效范围n应该满足： 0 < n <= maxIdle 当异步的回收器线程回收完对象、或者调用方线程归还对象、以及销毁对象等操作后，都会重新检查并确保对象池中至少有minIdle个空闲对象。
     */
    private int minIdle = 5;

    /**
     * 初始化连接数
     */
    private int initialSize = 3;

    private int refCount = 4;
}